/*
* 说明：用于项目字典值的使用
* ljy
* 20220225最后修改
* 提示：应该根据前端展示的需求，用好mapToDict和dictToMap两个函数。
* */

export interface Option { // 作为字典选项标准
  value: any, // 相当于键，即Key
  label: string // 相当于标签
}

// 性别选择
// export const userSexMap: Map<number, String> = new Map([[0, '未选择'], [1, '男'], [2, '女']]);

// export const userStatus: Map<number, String> = new Map([[0, '不可用'], [1, '可用'], [2, '锁定']]);

export const userSexDict: Array<Option> = [
  {
    value: 0,
    label: '保密',
  },
  {
    value: 1,
    label: '男',
  },
  {
    value: 2,
    label: '女',
  }];
export const userStatusDict: Array<Option> = [
  {
    value: 0,
    label: '禁用',
  },
  {
    value: 1,
    label: '可用',
  },
  {
    value: 2,
    label: '锁定',
  }];

export const yesOrNoDict: Array<Option> = [
  {
    value: true,
    label: '是',
  },
  {
    value: false,
    label: '否',
  }];
// 权限的菜单类型
export const permissionTypeDict: Array<Option> = [
  {
    value: 1,
    label: '菜单',
  },
  {
    value: 2,
    label: '按钮',
  }];
// 权限的打开方式
export const permissionLinkTypeDict: Array<Option> = [
  {
    value: 1,
    label: '组件',
  },
  {
    value: 2,
    label: '内链',
  },
  {
    value: 3,
    label: '外链',
  }];
// major_id 作者：蒙泰成
export const MajorId: Array<Option> = [
  {
    value: 2,
    label: '软件技术',
  },
  {
    value: 3,
    label: '网络技术',
  },
  {
    value: 4,
    label: '动漫',
  }];
// type课程类型 作者：蒙泰成
export const type: Array<Option> = [
  {
    value: 1,
    label: '专业基础课',
  },
  {
    value: 2,
    label: '专业核心课',
  },
  {
    value: 3,
    label: '专业实践课',
  },
  {
    value: 4,
    label: '公共选修课',
  },
  {
    value: 5,
    label: '公共必修课',
  }];
// =======
// 教室类型 颜卓中添加
export const roomTypeDict: Array<Option> = [
  {
    value: 1,
    label: '机房',
  },
  {
    value: 2,
    label: '多媒体教室',
  },
  {
    value: 3,
    label: '普通教室',
  }];
// 部门管理所属部门 颜卓中添加
export const sysdepartmentTypeDict: Array<Option> = [
  {
    value: 1,
    label: '柳州城市职业学院',
  },
  {
    value: 2,
    label: '柳铁',
  },
  {
    value: 3,
    label: '柳州职业技术学院',
  },
];
// 教室管理所属部门 颜卓中添加
export const departmentTypeDict: Array<Option> = [
  {
    value: 1,
    label: '信息工程系',
  },
  {
    value: 2,
    label: '经济贸易系',
  },
  {
    value: 6,
    label: '文化旅游系',
  },
  {
    value: 7,
    label: '公共基础部',
  },
  {
    value: 8,
    label: '机电工程系',
  },
];
// >>>>>>> origin/master
export const mapToDict = <K>(map:Map<K, string>):Option[] => { // 用于从map转数组，方便用于不同的场合
  const array:Option[] = new Array(map.size);
  let index = 0;
  // es-lint不推荐下面的写法
  // for (let [key, value] of map) {
  //   array[index].value = key;
  //   array[index].label = value;
  //   index += 1;
  // }
  map.forEach((value, key) => {
    array[index].value = key;
    array[index].label = value;
    index += 1;
  });
  return array;
};

export const dictToMap = <K>(array:Option[]):Map<K, string> => { // 用于从数组转map，方便用于不同的场合
  const map:Map<K, string> = new Map();
  array.forEach((item:Option) => {
    map.set(item.value, item.label);
  });
  return map;
};

/*
export default {
  sexOfUserMap
}
*/

// console.log(dictToMap(yesOrNoDict));
